Remote content delivery is a mechanism often used in the context of gaming to allow a user operating a client device to interact with content being generated remotely. For example, a user may be operating a client device that interacts with a game running on a remote server. User inputs may be transmitted from the client device to the remote server, where content in the form of game instructions or graphics may be generated for transmission back to the client device. Such remote interaction between users and games may occur during actual gameplay as well as during game menu interfacing.
Typically user inputs are sent individually over a network from the client device to the remote server as a packet using a transmission control protocol (TCP). In order to ensure that loss of user inputs doesn't occur, whenever a user input is lost during transmission, the remote server notifies the client device and requests the client device to retransmit the lost user input. Until the remote server receives the lost user input, any other subsequent user inputs that are generated at the client device are blocked from being transmitted to the remote server. While user input loss is eliminated under such a mechanism, undesirable behavior may occur due to the latency involved in handling user input loss. For example, if user inputs are not immediately transmitted to the remote server due to network loss, and are all of a sudden received when network conditions improve, then graphics corresponding to those user inputs may be displayed in an unusual manner (e.g., displayed in a bursty nature) at the client device.
Because gaming typically requires very quick response time between transmission of user inputs and generating game content in response to user inputs, the undesirable behaviors resulting from handling packet loss using TCP may be intolerable.